home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / poly7.src < prev    next >
Text File  |  1992-08-18  |  5KB  |  207 lines

  1. %%HP: T(3)A(R)F(.);
  2. @ POLY by Wayne Scott
  3. DIR
  4.   PDIV
  5.   \<< DUP SIZE 3 ROLLD OBJ\-> \->ARRY SWAP OBJ\-> \->ARRY \-> c b a
  6.      \<< a b 
  7.          IF c 1 SAME
  8.          THEN OBJ\-> DROP / OBJ\-> 1 GET \->LIST { 0 }
  9.          ELSE           
  10.            WHILE OVER SIZE 1 GET c \>=
  11.            REPEAT DIVV
  12.            END DROP \-> d
  13.            \<< a SIZE 1 GET c 1 - -
  14.              IF DUP NOT
  15.              THEN 1
  16.              END \->LIST d OBJ\-> OBJ\-> DROP \->LIST
  17.            \>>
  18.         END
  19.      \>>
  20.   \>>
  21.   TRIM
  22.   \<< OBJ\-> \-> n
  23.      \<< n
  24.          WHILE ROLL DUP ABS NOT n 1 - AND
  25.          REPEAT DROP 'n' DECR
  26.          END n ROLLD
  27.          n \->LIST
  28.      \>>
  29.   \>>
  30.       RDER
  31.         \<< \-> F G
  32.           \<< G F PDER PMUL G PDER { -1 } PMUL F PMUL PADD G G PMUL
  33.           \>>
  34.         \>>
  35.       IRT
  36.         \<< OBJ\-> \-> n
  37.           \<<
  38.             IF n 0 >
  39.             THEN 1 n
  40.               START n ROLL { 1 } SWAP NEG +
  41.               NEXT
  42.             ELSE { 1 }
  43.             END
  44.             IF n 1 >
  45.             THEN 2 n
  46.               START PMUL
  47.               NEXT
  48.             END
  49.           \>>
  50.         \>>
  51.       PDER
  52.         \<< OBJ\-> \-> n
  53.           \<< 1 n
  54.             FOR i n ROLL n i - *
  55.             NEXT DROP
  56.             IF n 1 ==
  57.             THEN { 0 }
  58.             ELSE n 1 - \->LIST
  59.             END
  60.           \>>
  61.         \>>
  62.       PF
  63.         \<< MAXR { } \-> Z P OLD LAST
  64.           \<< 1 P SIZE
  65.             FOR I P I GET \-> p1
  66.               \<<
  67.                 IF p1 OLD \=/
  68.                 THEN Z p1 EVPLY 1 P SIZE
  69.                   FOR J
  70.                     IF P J GET P I GET \=/
  71.                     THEN p1 P J GET - /
  72.                     END
  73.                   NEXT p1 'OLD' STO { } 'LAST' STO
  74.                 ELSE
  75.                   IF { } LAST SAME
  76.                   THEN 1 { } 1 P SIZE
  77.                     FOR K P K GET
  78.                       IF DUP p1 ==
  79.                       THEN DROP
  80.                       ELSE +
  81.                       END
  82.                     NEXT IRT Z SWAP
  83.                   ELSE LAST OBJ\-> DROP
  84.                   END RDER DUP2 5 PICK 1 + 3 ROLLD 3 \->LIST 'LAST' STO
  85.                   p1 EVPLY SWAP p1 EVPLY SWAP / SWAP ! /
  86.                 END
  87.               \>>
  88.             NEXT P SIZE \->LIST
  89.           \>>
  90.         \>>
  91.       FCTP
  92.         \<<
  93.           IF DUP SIZE 3 >
  94.           THEN DUP BAIRS SWAP OVER PDIV DROP FCTP
  95.           END
  96.         \>>
  97.       RT
  98.         \<< TRIM DUP SIZE \-> n
  99.           \<<
  100.             IF n 3 >
  101.             THEN DUP BAIRS SWAP OVER PDIV DROP \-> A B
  102.               \<< A RT B RT
  103.               \>>
  104.             ELSE
  105.               IF n 2 >
  106.               THEN QUD
  107.               ELSE LIST\-> DROP NEG SWAP /
  108.               END
  109.             END 
  110.           \>>
  111.         \>>
  112.       L\178A
  113.         \<<
  114.           IF DUP TYPE 5 ==
  115.           THEN OBJ\-> \->ARRY
  116.           ELSE OBJ\-> 1 GET \->LIST
  117.           END
  118.         \>>
  119.       PADD
  120.         \<< DUP2 SIZE SWAP SIZE \-> A B nB nA
  121.           \<< A L\178A B L\178A
  122.             IF nA nB <
  123.             THEN SWAP
  124.             END
  125.             IF nA nB \=/
  126.             THEN 1 nA nB - ABS
  127.               START 0
  128.               NEXT
  129.             END nA nB - ABS 1 + ROLL OBJ\-> 1 GET
  130.             nA nB - ABS + \->ARRY + L\178A
  131.           \>>
  132.         \>>
  133.       PMUL
  134.         \<< DUP2 SIZE SWAP SIZE \-> X Y ny nx
  135.           \<< 1 nx ny + 1 -
  136.             FOR I 0
  137.             NEXT 1 nx
  138.             FOR I 1 ny
  139.               FOR J I J + 1 - ROLL X I GET Y J GET * + I J + 1 - ROLLD
  140.               NEXT
  141.             NEXT { } 1 nx ny + 1 -
  142.             START SWAP +
  143.             NEXT
  144.           \>>
  145.         \>>
  146.       EVPLY
  147.         \<< OVER
  148.           IF DUP TYPE 5 ==
  149.           THEN SIZE
  150.           ELSE SIZE 1 GET
  151.           END \-> a r n
  152.           \<< a 1 GET
  153.             IF n 1 >
  154.             THEN 2 n
  155.               FOR i r * a i GET +
  156.               NEXT
  157.             END
  158.           \>>
  159.         \>>
  160.       COEF
  161.         \<< \-> E n
  162.           \<< 0 n
  163.             FOR I 0 'X' STO E EVAL 'X' PURGE E 'X' \.d 'E' STO I ! /
  164.             NEXT 2 n 1 +
  165.             FOR I I ROLL
  166.             NEXT n 1 + \->LIST
  167.           \>>
  168.         \>>
  169.       EQ 1
  170.   DIVV
  171.     \<< DUP 1 GET \-> a b c
  172.       \<< a 1 GET c / DUP b * a SIZE RDM a SWAP - OBJ\-> 1 GETI
  173.         1 - PUT \->ARRY SWAP DROP b
  174.       \>>
  175.     \>>
  176.   QUD
  177.     \<< LIST\-> \->ARRY DUP 1 GET /
  178.       ARRY\-> DROP ROT DROP SWAP 2 / NEG DUP SQ ROT - \v/ DUP2 + 3 ROLLD -
  179.     \>>
  180.   BAIRS
  181.     \<< OBJ\-> 1 1 \-> n R S
  182.       \<<
  183.         DO 0 n 1 + PICK 0 0 0 4 PICK 5 n + 7
  184.           FOR J
  185.             J PICK R 7 PICK * +
  186.             S 8 PICK * +
  187.             7 ROLL DROP DUP 6 ROLLD
  188.             R 3 PICK * +
  189.             S 4 PICK * +
  190.             5 ROLL DROP -1
  191.           STEP 3 PICK SQ 3 PICK 6 PICK * -
  192.           IF DUP 0 ==
  193.           THEN DROP 1 1
  194.           ELSE 6 PICK 6 PICK *
  195.             5 PICK 9 PICK * -
  196.             OVER /
  197.             4 PICK 9 PICK *
  198.             8 PICK 7 PICK * -
  199.             ROT /
  200.           END DUP 'S' STO+
  201.           SWAP DUP 'R' STO+
  202.         UNTIL (0,1) * + ABS .000000001 < 7 ROLLD 6 DROPN
  203.         END n DROPN 1 R NEG S NEG 3 \->LIST
  204.       \>>
  205.     \>>
  206. END
  207.